package com.winshare.saleAssistant.service;

import com.winshare.saleAssistant.domain.dto.req.*;
import com.winshare.saleAssistant.domain.dto.resp.StaffCurrentInfoDTO;
import com.winshare.saleAssistant.domain.dto.resp.StaffExcelExportData;
import com.winshare.saleAssistant.domain.dto.resp.StaffRespDTO;
import com.winshare.saleAssistant.domain.dto.resp.UserRespDTO;
import com.winshare.saleAssistant.domain.entity.AppDO;
import com.winshare.saleAssistant.domain.entity.MenuDO;
import com.winshare.saleAssistant.domain.entity.StaffDO;
import com.winshare.saleAssistant.domain.query.StaffExcelExportQuery;
import com.winshare.saleAssistant.util.Page;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;

public interface StaffService {

    void save(StaffCreateDTO staffCreateDTO);

    void update(StaffUpdateDTO staffUpdateDTO);

    void delete(StaffDeleteDTO staffDeleteDTO);

    Page<StaffRespDTO> getStaffList(StaffQueryDTO staffQueryDTO);

    UserRespDTO login(LoginDTO loginDTO, HttpServletRequest request,HttpSession session);

    void getVerificationCode(CaptchaReqDTO captchaReqDTO);

    UserRespDTO loginByPhone(LoginByPhoneDTO loginByPhoneDTO, HttpServletRequest request);

    List<MenuDTO> getMenuListByCurrent(HttpServletRequest request);

    void setStudyModel(StudyModelDTO studyModelDTO, HttpServletRequest request);

    void setSubscribeModel(SubscribeModelDTO subscribeModelDTO, HttpServletRequest request);

    void loginOut(HttpServletRequest request);

    void setPhone(PhoneChangeDTO phoneChangeDTO, HttpServletRequest request);

    Object loginByOpenId(LoginByOpenIdDTO loginByOpenIdDTO, HttpServletRequest request);

    StaffRespDTO getStaffDetail(BaseIdDTO baseIdDTO);

    StaffDO getStaffDetailByOpenId(StaffDO  staffDO);

    List<AppDO> getAppListByCurrent(HttpServletRequest request);

    StaffCurrentInfoDTO getCurrentStaffInfo();

    void setHeadImage(HeadImageDTO headImageDTO);

    void setProductReadPassword(SetProductReadPasswordDTO setProductReadPasswordDTO);

    List<StaffExcelExportData> getStaffExcelExportList(StaffExcelExportDTO staffExcelExportDTO);

    List<MenuDTO>  getMenuListByCurrentPersonAndApp(BaseIdDTO baseIdDTO);

    List<MenuDTO>  getMenuListByCurrentPersonAndAppV2(BaseIdDTO baseIdDTO);

    List<MenuDTO>  getMenuListByCurrentV2(HttpServletRequest request);
}
